Serial Attached SCSI (SAS) protocol specifies a protocol stack that provides serial physical interconnect that can be used to connect together storage devices such as Hard Disk Drives (HDD) and host devices. It specifies the transport layer protocols to transport SCSI commands, serial ATA commands and management commands among storage devices. The protocol is intended to be used in conjunction with SCSI and ATA command sets.
The SAS protocol defines the function of a SAS expander device, which is part of the service delivery subsystem and facilitates communication between SAS devices. In the general sense, the SAS expanders provide the switching and routing functions among the SAS devices that are attached to it.
Multiple SAS end devices and SAS expander devices can be connected together to form a SAS topology. There can be a single or multiple physical links connecting each pair of neighbouring devices. When there is a single physical link between two devices, the associated Phy on the SAS device is called a narrow port. When there are multiple physical links connecting two devices, the associated phys on an expander are considered to be a wide port. In other words, all links of a wide port are considered to be a common logical link from routing perspective, although it allows multiple simultaneous connections to pass through the wide port at the same time. The SAS standard does not support loop topology, i.e. there can be only one logical path (considering all links of a wide port to be a single link) to traverse the topology from any one device to any other device. Under such constraints, the only type of topology allowed by SAS specification is a tree topology.
SAS protocol defines 3 routing methods for SAS expanders: direct routing, table routing and subtractive routing. The SAS devices exchange an IDENTIFY frame across each physical link as part of link initialization process. Each device sends out its own world-wide-name (unique SAS address) in the IDENTIFY frame to its neighbour in the process. If the device is a SAS expander device, the Expander SMIP address is also used to uniquely identify the expander device. The expander device keeps a record of the SAS address of all neighbouring devices in a table called a direct routing database. The direct routing method is used by the SAS expander device to route connections to all devices directly attached to the expander. In a hierarchical topology, the expanders need to handle connections to devices that are not directly attached to the expander, but are attached to other expanders in the topology that is accessible through one or more expander devices. Such addresses are stored in the expander routing table (or table routing database). When handling a connection OPEN frame, the SAS expanders always use the direct routing method first by searching the destination SAS address in the direct routing database. If a match is found, the expander determines that the destination device is directly attached to itself. Hence the expander routes the OPEN frame to the port that is associated with the destination SAS address according to the direct routing database.
If the direct routing method does not find a match, the expander uses the table routing method by searching the destination address in the table routing database. If a match is found in the table routing database, the expander determines that the address is reachable through a neighbouring expander device. Consequently, the expander routes the OPEN to the port associated with the destination address according to the table routing database. If a match still cannot be found, a subtractive routing method may be used if the expander has one or more phys with subtractive routing attribute. If multiple phys have subtractive routing attribute, these Phys must belong to a wide port. In effect, the subtractive routing attribute defines a default port, to which all unmatched destinations are forwarded. In most cases, the subtractive routing port connects to an upper level expander (or host) that has more complete knowledge of the SAS topology to decide where the final destination device is located.
In the broader field of communications networks, the current state of the art involving routing in logical zones is represented by the following public domain publications: Serial Attached SCSI standard revision 1 and revision 1.1; U.S. Pat. No. 6,804,245 to Mitchem; U.S. Pat. No. 6,765,919 to Banks; U.S. Pat. No. 6,697,359 to George; and U.S. Pat. No. 6,622,163 to Tawill.
A SAS topology can contain a number of host, target and expander devices. The expanders are multi-port devices that provide switch functionality among host, target and expander devices. The SAS standard requires the topology to be without loops within each SAS domain. Furthermore, within a SAS physical domain, there is no mechanism to limit the exchange of information to isolate any device from any other device.
Any topology discovery master can see (discover) all devices within the domain and propagate the route table information to the expanders to allow any devices to connect to any other device. The expanders do not restrict the connection between any devices to any other devices. Broadcast events are propagated to every device in the domain. Expander devices provide unrestricted access to the SMP target, giving unrestricted control of the expander device to any host.
The SAS protocol provides unlimited access to all resources attached to the domain, since it is designed for a trusted environment where traffic isolation and access control in a SAS domain is not needed. However, there are many application environments where traffic isolation and/or controlled access are needed to protect against unauthorized access or interference between unintended devices in a physical domain.
It is, therefore, desirable to provide a routing approach that provides the ability to segment a physical SAS domain into virtual domains to allow access control.